/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package co.edu.senaclem.logica;

import co.edu.senaclem.modelo.Funcionario;
import co.edu.senaclem.persistencia.IFuncionarioDAO;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 *
 * @author anfeles
 */
@Stateless
public class FuncionarioLogica implements FuncionarioLogicaLocal {

    @EJB
    private IFuncionarioDAO funcionarioDAO;
    
    
    @Override
    public void registrar(Funcionario funcionario) throws Exception {
        //validaciones
        if(funcionario==null) {
            throw new Exception("El Funcionario es Nulo!");
        }
        
        if(funcionario.getArea()==null || funcionario.getArea().getCodigo()==0) {
            throw new Exception("El Area es Obligatoria!");
        }        
       
        //consulta si el funcionario ya existe
        Funcionario entity=funcionarioDAO.consultarPorId(funcionario.getDocumento().getDocumento());
        if(entity!=null){
            throw new Exception("El Funcionario Ya Existe!"); 
        }                        
        
        funcionarioDAO.insertar(funcionario);
    }

    @Override
    public void modificar(Funcionario funcionario) throws Exception {
        //validaciones
        if(funcionario==null) {
            throw new Exception("El Funcionario es Nulo!");
        }
        
        if(funcionario.getArea()==null || funcionario.getArea().getCodigo()==0) {
            throw new Exception("El Area es Obligatoria!");
        }        
       
        //consulta si el funcionario no existe
        Funcionario entity=funcionarioDAO.consultarPorId(funcionario.getDocumento().getDocumento());
        if(entity==null){
            throw new Exception("El Funcionario No Existe!"); 
        }     
        entity.setArea(funcionario.getArea()); 
        
        funcionarioDAO.modificar(entity);
    }

    @Override
    public void eliminar(Funcionario funcionario) throws Exception {
        //validaciones
        if(funcionario==null) {
            throw new Exception("El Funcionario es Nulo!");
        }
        
        if(funcionario.getDocumento().getDocumento()==null || funcionario.getDocumento().getDocumento()==0) {
            throw new Exception("La Identificación es Obligatoria!");
        }
        
        //consulta si el funcionario NO existe, sino existe no se puede eliminar
        Funcionario entity=funcionarioDAO.consultarPorId(funcionario.getDocumento().getDocumento());
        if(entity==null){
            throw new Exception("El Funcionario No Existe!"); 
        }
                        
        funcionarioDAO.eliminar(entity);
    }

    @Override
    public Funcionario consultarPorId(Long documentofuncionario) throws Exception {
        if(documentofuncionario==null || documentofuncionario==0){
            throw new Exception("La Cédula es Obligatoria!");
        }
        
        return funcionarioDAO.consultarPorId(documentofuncionario);
    }

    @Override
    public List<Funcionario> consultar() throws Exception {
        return funcionarioDAO.consultar();
    }
    
   
}
